#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
智能童话书增强版 - 简化启动版本
去除复杂依赖，专注核心智能功能
"""

import os
import sys
import json
import logging
from datetime import datetime
from flask import Flask, render_template, request, jsonify, session
import secrets

# 添加当前目录到Python路径
sys.path.append(os.path.dirname(os.path.abspath(__file__)))

# 导入自定义模块（如果可用）
story_engine = None
ernie_generator = None
try:
    from intelligent_story_engine import IntelligentStoryEngine, EmotionType
    story_engine = IntelligentStoryEngine()
    print("✅ 智能故事引擎加载成功！")
except ImportError as e:
    print(f"⚠️ 智能引擎不可用: {e}")

try:
    from ernie_model_integration import get_ernie_generator
    ernie_generator = get_ernie_generator()
    print("✅ ERNIE模型引擎加载成功！")
except ImportError as e:
    print(f"⚠️ ERNIE引擎不可用: {e}")

# 创建Flask应用
app = Flask(__name__)
app.secret_key = secrets.token_hex(16)

# 全局统计
app_stats = {
    "total_stories": 0,
    "user_sessions": 0,
    "average_rating": 4.2,
    "start_time": datetime.now(),
    "ratings": []
}

# 创建必要目录
os.makedirs('logs', exist_ok=True)

@app.route('/')
def enhanced_index():
    """增强版主页"""
    try:
        # 生成用户会话
        if 'user_id' not in session:
            session['user_id'] = secrets.token_hex(8)
            app_stats["user_sessions"] += 1
        
        # 模板数据
        template_data = {
            'stats': {
                'total_stories': app_stats["total_stories"],
                'user_sessions': app_stats["user_sessions"],
                'average_rating': app_stats["average_rating"]
            }
        }
        
        return render_template('index_enhanced.html', **template_data)
        
    except Exception as e:
        return f"""
        <h1>🎭 智能童话书</h1>
        <p><strong>系统状态:</strong> {'智能模式' if story_engine else '基础模式'}</p>
        <p><strong>生成故事数:</strong> {app_stats['total_stories']}</p>
        <p><strong>用户会话:</strong> {app_stats['user_sessions']}</p>
        <div style='background:#f0f8ff;padding:20px;border-radius:10px;margin:20px 0;'>
            <h3>🚀 快速体验</h3>
            <form method='post' action='/quick_story'>
                <p>
                    <label>故事主题:</label>
                    <select name='theme'>
                        <option value='友谊'>🤝 友谊与合作</option>
                        <option value='勇气'>💪 勇气与冒险</option>
                        <option value='智慧'>🧠 智慧与学习</option>
                    </select>
                </p>
                <p>
                    <label>主角:</label>
                    <input name='characters' value='小兔子,小松鼠' style='width:200px;'>
                </p>
                <button type='submit' style='background:#6f42c1;color:white;padding:10px 20px;border:none;border-radius:5px;'>
                    ✨ 生成智能童话
                </button>
            </form>
        </div>
        <p><em>模板加载错误: {e}</em></p>
        """

@app.route('/quick_story', methods=['POST'])
def quick_story():
    """快速故事生成"""
    try:
        theme = request.form.get('theme', '友谊')
        characters = request.form.get('characters', '小兔子').split(',')
        characters = [c.strip() for c in characters if c.strip()]
        
        # 优先使用ERNIE模型生成完整故事
        if ernie_generator:
            try:
                print(f"🧠 使用ERNIE引擎生成{theme}主题故事...")
                story_request = {
                    "theme": theme,
                    "characters": characters,
                    "age_group": "6-8岁"
                }
                result = ernie_generator.generate_complete_story(story_request)
                story_content = result["story"]
                insights = result.get("educational_insights", [])
                quality = result.get("quality_score", {}).get("overall", 0.9)
                print(f"✅ ERNIE故事生成成功: {result['title']}")
            except Exception as e:
                print(f"⚠️ ERNIE生成失败: {e}")
                ernie_generator = None
        
        if story_engine and not ernie_generator:
            # 使用智能引擎
            story_request = {
                "theme": theme,
                "characters": characters,
                "age_group": "6-8岁",
                "emotional_focus": "friendship"
            }
            result = story_engine.generate_intelligent_story(story_request)
            story_content = result["story"]
            insights = result.get("educational_insights", [])
            quality = result.get("quality_score", {}).get("overall", 0.8)
        elif not ernie_generator:
            # 备用基础故事生成（增强版本）
            story_content = f"""从前，在一个美丽的森林里，住着{characters[0]}。

第一幕：平静的开始
{characters[0]}是一个充满{theme}的小动物，它在森林里过着平静的生活，每天都和朋友们一起玩耍。

第二幕：意外的挑战  
有一天，森林里突然刮起了大风暴，许多小动物的家都被摧毁了。{characters[0]}看到朋友们无家可归，内心非常难过。

第三幕：勇敢的行动
{characters[0]}决定要帮助大家。它组织所有健康的动物一起工作，用树枝和叶子为无家可归的朋友们建造新的家园。

第四幕：新的困难
就在大家快要完成新家园时，又遇到了新的问题——食物不够了！冬天即将来临，如果没有足够的食物，大家都会挨饿。

第五幕：智慧的解决方案
{characters[0]}想起了祖母曾经告诉过它的秘密：在森林深处有一片神奇的果园。经过艰难的寻找和团队合作，它们终于找到了这片果园。

第六幕：圆满的结局
有了新家和充足的食物，森林里的动物们度过了一个温暖的冬天。{characters[0]}因为它的{theme}和智慧被大家选为森林的守护者。

这个故事告诉我们：真正的{theme}不仅体现在平时的相处中，更体现在困难时刻的相互支持和帮助。"""
            insights = [f"在困难中展现{theme}的真谛", "团队合作的力量", "智慧解决问题的重要性", "领导力的培养"]
            quality = 0.88
        
        app_stats["total_stories"] += 1
        
        return f"""
        <div style='max-width:800px;margin:0 auto;padding:20px;font-family:Microsoft YaHei;'>
            <h1>🎭 智能童话书</h1>
            <div style='background:linear-gradient(135deg, #667eea, #764ba2);color:white;padding:20px;border-radius:15px;margin:20px 0;'>
                <h2>📖 {characters[0]}的{theme}故事</h2>
                <p><strong>引擎类型:</strong> {'🧠 智能引擎' if story_engine else '📝 基础引擎'} | 
                   <strong>质量评分:</strong> {int(quality*100)}分</p>
            </div>
            
            <div style='background:#f8f9fa;padding:25px;border-radius:10px;line-height:1.8;font-size:1.1em;'>
                {story_content.replace(chr(10), '<br><br>')}
            </div>
            
            <div style='background:#e3f2fd;padding:20px;border-radius:10px;margin:20px 0;'>
                <h3>💡 教育价值</h3>
                <ul>
                    {''.join([f'<li>✅ {insight}</li>' for insight in insights])}
                </ul>
            </div>
            
            <div style='background:#fff3cd;padding:20px;border-radius:10px;text-align:center;'>
                <h3>📊 系统统计</h3>
                <p><strong>已生成故事:</strong> {app_stats["total_stories"]} 个 | 
                   <strong>用户会话:</strong> {app_stats["user_sessions"]} 个 | 
                   <strong>平均评分:</strong> {app_stats["average_rating"]} 星</p>
            </div>
            
            <div style='text-align:center;margin:30px 0;'>
                <a href='/' style='background:#28a745;color:white;padding:12px 24px;text-decoration:none;border-radius:8px;margin:10px;display:inline-block;'>
                    🏠 返回首页
                </a>
                <a href='/quick_story' onclick='location.reload()' style='background:#17a2b8;color:white;padding:12px 24px;text-decoration:none;border-radius:8px;margin:10px;display:inline-block;'>
                    🔄 生成新故事
                </a>
            </div>
        </div>
        """
        
    except Exception as e:
        return f"<h1>错误</h1><p>{e}</p><a href='/'>返回首页</a>"

@app.route('/api/generate_story', methods=['POST'])
def api_generate_story():
    """API故事生成"""
    try:
        data = request.get_json()
        theme = data.get("theme", "友谊")
        characters = data.get("characters", ["小兔子"])
        
        # 优先使用ERNIE模型
        if ernie_generator:
            try:
                result = ernie_generator.generate_complete_story({
                    "theme": theme,
                    "characters": characters,
                    "age_group": data.get("age_group", "6-8岁")
                })
            except Exception as e:
                print(f"⚠️ ERNIE API生成失败: {e}")
                ernie_generator = None
        
        if story_engine and not result:
            result = story_engine.generate_intelligent_story({
                "theme": theme,
                "characters": characters,
                "age_group": data.get("age_group", "6-8岁"),
                "emotional_focus": data.get("emotional_focus", "friendship")
            })
        elif not result:
            # 增强的备用故事生成
            result = {
                "title": f"{characters[0]}的{theme}冒险",
                "story": f"""从前有一只{characters[0]}，它生活在一个美丽的村庄里。

第一个转折：意外的发现
有一天，{characters[0]}在森林里散步时，发现了一张神秘的地图，地图上标记着一个传说中的宝藏位置。

第二个转折：遇到困难
{characters[0]}决定寻找宝藏，但在路上遇到了一只受伤的老狐狸。老狐狸警告说这个宝藏被一个邪恶的巫师守护着。

第三个转折：真相大白
当{characters[0]}到达宝藏位置时，发现所谓的"邪恶巫师"其实是一位孤独的老爷爷，而"宝藏"是他收集的所有关于{theme}的智慧故事。

结局：{characters[0]}明白了真正的宝藏不是金银珠宝，而是{theme}和智慧。它和老爷爷成为了好朋友，并把这些智慧故事分享给了村里的所有小朋友。""",
                "characters": [{"name": char, "traits": ["善良", "勇敢", "智慧"]} for char in characters],
                "educational_insights": [f"{theme}是最珍贵的品质", "不要被外表欺骗", "分享让快乐加倍", "友谊比财富更重要"],
                "quality_score": {"overall": 0.85}
            }
        
        app_stats["total_stories"] += 1
        
        engine_type = "ERNIE智能引擎" if ernie_generator else ("智能引擎" if story_engine else "增强基础引擎")
        return jsonify({
            "success": True,
            "data": result,
            "message": "✅ 故事生成成功",
            "engine_type": engine_type
        })
        
    except Exception as e:
        return jsonify({"success": False, "error": str(e)}), 500

@app.route('/api/system_status')
def api_system_status():
    """系统状态API"""
    uptime = (datetime.now() - app_stats["start_time"]).total_seconds()
    
    engine_status = "ERNIE智能引擎已就绪" if ernie_generator else ("智能引擎已就绪" if story_engine else "增强基础模式运行")
    
    return jsonify({
        "system_status": "运行正常",
        "engine_status": engine_status,
        "total_stories": app_stats["total_stories"],
        "user_sessions": app_stats["user_sessions"],
        "average_rating": app_stats["average_rating"],
        "uptime_seconds": int(uptime),
        "features_enabled": [
            "🧠 ERNIE智能生成" if ernie_generator else ("📚 智能故事生成" if story_engine else "📝 增强故事生成"),
            "🎭 角色个性化",
            "💝 情感分析" if (story_engine or ernie_generator) else "📖 三幕式情节",
            "📊 质量评估",
            "📈 实时统计",
            "🔄 三次转折剧情"
        ]
    })

@app.route('/api/status')
def get_status():
    return jsonify({
        "status": "running",
        "engine": "ERNIE智能引擎" if ernie_generator else ("智能引擎" if story_engine else "增强基础模式"),
        "version": "2.0"
    })

if __name__ == '__main__':
    print("=" * 60)
    print("🎭 智能童话书")
    engine_info = "ERNIE智能引擎已加载" if ernie_generator else ("智能引擎已加载" if story_engine else "增强基础模式运行")
    print(f"🧠 引擎状态: {engine_info}")
    print("🚀 正在启动应用...")
    print("=" * 60)

if __name__ == '__main__':
    print("=" * 60)
    print("🎭 智能童话书 - 智能版")
    print(f"🧠 引擎状态: {'智能引擎已加载' if story_engine else '基础模式运行'}")
    print("🚀 正在启动应用...")
    print("=" * 60)
    
    try:
        print("✅ 系统初始化成功！")
        print("🌐 增强版访问地址: http://localhost:5001")
        print("📊 原版应用地址: http://localhost:5000")
        print("🎯 开始您的智能童话创作之旅！")
        print("=" * 60)
        
        app.run(host='0.0.0.0', port=5001, debug=True, threaded=True)
        
    except Exception as e:
        print(f"❌ 应用启动失败: {e}")
=======
        ]
    })

if __name__ == '__main__':
    print("=" * 60)
    print("🎭 智能童话书")
    engine_info = "ERNIE智能引擎已加载" if ernie_generator else ("智能引擎已加载" if story_engine else "增强基础模式运行")
    print(f"🧠 引擎状态: {engine_info}")
    print("🚀 正在启动应用...")
    print("=" * 60)
    
    try:
        print("✅ 系统初始化成功！")
        print("🌐 增强版访问地址: http://localhost:5001")
        print("📊 原版应用地址: http://localhost:5000")
        print("🎯 开始您的智能童话创作之旅！")
        print("=" * 60)
        
        app.run(host='0.0.0.0', port=5001, debug=True, threaded=True)
        
    except Exception as e:
        print(f"❌ 应用启动失败: {e}")
=======
    print("=" * 60)
    print("🎭 智能童话书")
    engine_info = "ERNIE智能引擎已加载" if ernie_generator else ("智能引擎已加载" if story_engine else "增强基础模式运行")
    print(f"🧠 引擎状态: {engine_info}")
    print("🚀 正在启动应用...")
    print("=" * 60)

if __name__ == '__main__':
    print("=" * 60)
    print("🎭 智能童话书 - 智能版")
    print(f"🧠 引擎状态: {'智能引擎已加载' if story_engine else '基础模式运行'}")
    print("🚀 正在启动应用...")
    print("=" * 60)
    
    try:
        print("✅ 系统初始化成功！")
        print("🌐 增强版访问地址: http://localhost:5001")
        print("📊 原版应用地址: http://localhost:5000")
        print("🎯 开始您的智能童话创作之旅！")
        print("=" * 60)
        
        app.run(host='0.0.0.0', port=5001, debug=True, threaded=True)
        
    except Exception as e:
        print(f"❌ 应用启动失败: {e}")